iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
Modern Web

創意前端設計:用 Vue.js 打造 30 個互動實用功能系列 第 3

Day03 Vue.js 簡單迷人的網頁動態效果 - 結合UnoCSS篇

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20240916/20124462L91XQ94NS1.jpg

使用 Vue.js 結合UnoCSS 創建高效過渡效果

嘿,開發者小夥伴們!你是不是也想讓自己的網站不僅好看還超順滑?
今天就帶你一起來做 Vue.jsUnoCSS 的絕妙組合,讓你輕鬆玩轉高效、靈活的過渡效果!
在這系列文章裡,我們不只是會聊到怎麼用這兩個工具來打造動態效果,還會帶你看看不同的 CSS 設計系統,教你怎麼讓網站又美又有趣。


https://ithelp.ithome.com.tw/upload/images/20240916/20124462AVHGRaFfU9.png

現代 CSS 設計系統

在網頁設計中,CSS 設計系統是一套對樣式進行組織、結構化的方法,可以根據不同的設計哲學和需求進行劃分,這些系統各自強調不同的設計原則和應用場景。以下是常見的 CSS 設計系統及其對應的框架和工具:

1. Atomic Design

  • UnoCSS:這是一款基於原子化設計的 CSS 引擎,允許開發者使用最少的樣式程式碼來靈活構建複雜的畫面。
  • UnoCSS 特別適合需要精確控制樣式的專案,開發者可以根據具體需求細緻定制,這是傳統框架如 Bootstrap 無法輕易做到的。在我個人的開發經驗中,UnoCSS客製化能力使我能夠針對專案的具體需求精確調整樣式,而不受框架預設樣式的限制。
  • Tailwind CSS:也是基於原子化設計的 CSS 框架,提供大量的工具類別,讓開發者能快速搭建響應式設計,雖然靈活,但可能不像 UnoCSS 那麼輕量和可控。

2. Material Design

  • Bootstrap 4:雖然不屬於 Material Design,但它提供了一套一致的 UI 元件和響應式設計,適合快速開發。不過,由於 Bootstrap 採用了固定的設計系統,當你需要更加靈活且精細的控制時,它可能不夠靈活,這就是為什麼我選擇 UnoCSS 來代替。
  • Materialize CSSMaterial UI:這些框架是基於 Material Design 概念,提供統一的 UI 元件設計,但和 Bootstrap 一樣,它們的自定義能力相對有限。

3. Utility-First CSS

  • Tailwind CSS:強調實用性的大量工具類別框架,能快速構建響應式設計,特別適合原型開發或需要快速迭代的項目。
  • Tachyons:另一個實用優先的 CSS 框架,注重維護性,能快速應用樣式。

4. Object-Oriented CSS (OOCSS)

  • OOCSSSMACSS:這些方法論強調結構化和可維護的 CSS 程式碼管理,適合大規模專案,沒有特定的框架,但這些理念可以與 UnoCSS 結合應用。

5. Block-Element-Modifier (BEM)

  • BEMSuitCSS:提供一種命名規範,專注於提高 CSS 的可維護性,這種命名規則可以與 UnoCSS 的原子化設計結合,保持樣式的結構清晰。

6. Component-Driven CSS

  • CSS ModulesStyled Components:這些工具適合現代框架如 React 和 Vue,幫助管理局部樣式,避免全局樣式衝突。

為什麼選擇 UnoCSS?

UnoCSS 之所以深受開發者喜愛,源於其靈活的原子化設計方式。與傳統框架如 Bootstrap 相比,UnoCSS 提供了更高的自由度,並且能有效避免樣式冗餘問題。

  • 高效能:UnoCSS 採用了按需生成樣式的機制,大幅減少不必要的 CSS 程式碼,優化頁面加載速度。
  • 高度自定義:UnoCSS 可以透過簡單的原子類別來構建複雜的動態效果,特別適合需要精細樣式控制的動態網頁設計。

UnoCSS 的原子類別賦予了開發者靈活的樣式控制能力,讓你能夠輕鬆調整和組合過渡效果,這在響應式設計和跨裝置的應用中尤其實用。


UnoCSS 實作:設計漸層背景與過渡效果

讓我們來看看如何用 UnoCSS 實現一個帶有背景漸層的頁面,並結合 Vue.js 的過渡效果。

img

  • 完整程式碼:
<script lang="ts" setup>
import { ref, onMounted, onUnmounted } from 'vue';

const show = ref(true);

onMounted(() => {
  const intervalId = setInterval(() => (show.value = !show.value), 1500);
  onUnmounted(() => clearInterval(intervalId));
});
</script>

<template>
    <div class="flex flex-col items-center justify-center h-screen overflow-hidden text-30 bg-gradient-to-br from-[#91defe] via-[#99c0f9] to-[#f9bccc]">
    <transition name="fade">
      <div v-if="show">Hello, I ❤️ Coding !</div>
    </transition>
  </div>
</template>

<style scoped>
.fade-enter-active, .fade-leave-active {
  transition: opacity 1.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

  • UnoCSS 程式碼片段:
<template>
    <div class="flex flex-col items-center justify-center h-screen overflow-hidden text-30 bg-gradient-to-br from-[#91defe] via-[#99c0f9] to-[#f9bccc]">
    <transition name="fade">
      <div v-if="show">Hello, I ❤️ Coding !</div>
    </transition>
  </div>
</template>

UnoCSS樣式:背景漸層作法解析

  • flex:表示 display: flex;
  • flex-col:表示 flex-direction: column;
  • items-center:表示 align-items: center;
  • justify-center:表示 justify-content: center;
  • h-screen:表示 height: 100vh;
  • overflow-hidden:表示 overflow: hidden;
  • bg-gradient-to-br:表示背景是從左上到右下的漸變(相當於 to bottom right
  • from-[#91defe] via-[#99c0f9] to-[#f9bccc]:漸變的顏色從 #91defe 開始,經過 #99c0f9,最後到 #f9bccc

Vue.js 結合 UnoCSS 實現動態效果

  • 背景漸層:使用 bg-gradient-to-br 從左上角到右下角創建了漸層背景。
  • 過渡效果:透過 Vue.js 的 <transition> 元件來實現元素進場和退場的過渡效果。

Vue.js 的 <Transition> 元件與 UnoCSS 是一個完美的結合。UnoCSS 提供了豐富的原子類別,使過渡效果能夠更加靈活定制,同時 Vue.js 內建的過渡系統則提供了流暢的動態處理方式。這讓我們能夠快速實現各種過場動效,提升網站的互動性和使用者體驗。


結語

動效就這麼搞定了!利用UnoCSS 和 Vue.js,頁面變得超吸睛!接下來,我們要來實現更複雜的動態交互效果囉✨


上一篇
Day02 Vue.js 簡單迷人的網頁動態效果 - 解構基礎篇
下一篇
Day04 Vue.js 簡單迷人的網頁動態效果 - 深入效能篇
系列文
創意前端設計:用 Vue.js 打造 30 個互動實用功能30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言